.TITLE LOWCR .IDENT /06.00/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; D. N. CUTLER 11-AUG-73 ; ; PREVIOUSLY MODIFIED BY: ; ; P. J. BEZEREDI ; J. M. LAWLER ; B. S. MCCARTHY ; R. T. PERRON ; T. LEKAS ; T. M. MARTIN ; J. R. KAUFFMAN ; J. W. BERZLE ; C. A. SILVER ; L. B. MCCULLEY ; K. L. NOEL ; P.K.M. WEISS ; G. N. LARSEN ; D. T. CARROLL ; ; MODIFIED FOR RSX-11M-PLUS VERSION 4.6 BY: ; ; D. CARROLL 17-Oct-1995 06.00 ; DC403 - Merge powerfail and crash stacks together, ; Also, allocate the crash data base for MS: ; /DU:/MU: together (both will not be used at ; the same time). ; ; ; ; LOW CORE POINTERS, TRAP VECTORS, AND INTERRUPT VECTORS ; ; THIS FILE MUST BE FIRST IN THE TASK BUILDER COMMAND FILE SINCE ; IT OCCUPIES LOCATIONS STARTING AT REAL ZERO. ; ; MACRO LIBRARY CALLS ; .MCALL HDRDF$,HWDDF$,PCBDF$ HDRDF$ ;DEFINE HEADER OFFSETS HWDDF$ ;DEFINE HARDWARE REGISTERS PCBDF$ ,,SYSDEF ;DEFINE PCB OFFSETS AND SIZE .PSECT ; ; LOCAL MACROS ; ; GENVT-GENERATE VECTOR ENTRY ; .MACRO GENVT ARG .IF DF E$$NSI .WORD $NS'ARG .IFF .WORD $NONSI .ENDC .WORD PR7!<<<$$$-START>/4>&17> .ENDM .MACRO NSI .IF DF E$$LOG&E$$NSI CALL $NSIER .IFF IOT .ENDC .ENDM NSI START: .REPT V$$CTR/4 $$$=. GENVT \<<$$$-START>/<4*20>> .ENDR .=START+4 .WORD $TRP04 ;TRAPS TO 4 (ODD,STACK,NONEX MEM) .WORD PR7 ; .WORD $ILINS ;ILLEGAL (RESERVED) INSTRUCTION TRAPS .WORD PR7 ; .WORD $TRACE ;BREAK POINT (TRACE) TRAPS .WORD PR7 ; .WORD $IOTRP ; .WORD PR7 ; .WORD $NONSI ;NONSENSE INTERRUPT .WORD PR7 ; .WORD $EMTRP ;EMT INSTRUCTION TRAPS .WORD PR7 ; .WORD $TRTRP ;TRAP INSTRUCTION TRAPS .WORD PR7 ; .IF DF C$$CDA JMP $CRASH ;JUMP TO CRASH DUMP ROUTINE .IFF ; DF C$$CDA HALT ;HALT - NO CRASH DUMP SUPPORT BR .-2 ;DON'T ALLOW CONTINUE, EITHER .ENDC ; DF C$$CDA .DSW:: .WORD .+2 ;ADDRESS OF DIRECTIVE STATUS .BLKW 1 ;DIRECTIVE STATUS WORD .BLKW 1 ;FCS IMPURE AREA POINTER .BLKW 1 ;FORTRAN IMPURE AREA POINTER .BLKW 1 ;OVERLAY RUN TIME SYSTEM IMPURE AREA POINTER .BLKW 1 ;RESERVED FOR EXPANSION .BLKW 12. ; .WORD 0 ;CONSTANTLY CHANGING WORD FOR M9312mp. .WORD $ENVEC ;112 - FIXED POINTER TO TABLE ; OF NECESSARY ENTRY POINTS .BLKB V$$CTR-114 ; ; ; EXECUTIVE STACK AREA ; .ASCII /COPR. (C) MENTEC 1995/ ;ASCII COPYRIGHT NOTICE .ASCIZ /*PDP-11 25TH ANNIVERSARY*/ .ASCIZ /*RSX-11 20TH ANNIVERSARY*/ .BLKW 49.-26. ;SYSTEM STACK .IF DF P$$MON .BLKW 16. ;DEFINE EXTRA STACK SPACE FOR P-MONITOR .ENDC .IF DF I$$C11 .BLKW 30. ; .ENDC .IF DF P$$LAS .BLKW P.LGTH/2 ;DEFINE EXTRA STACK FOR PLAS SYSTEMS .ENDC .IF DF M$$NET .BLKW 10. ;ADD 10. WORDS TO STACK SPACE FOR ;DECNET TO SUPPORT FDX CHARACTER ;INTERRUPT DEVICES. .ENDC ; DF M$$NET $UMR4:: .BLKW 1 ;USER'S SAVED R4 $UMR5:: .BLKW 1 ;USER'S SAVED R5 $UMPC:: .BLKW 1 ;USER'S SAVED PC $UMPS:: .BLKW 1 ;USER'S SAVED PS $STACK:: ;REF LABEL ; ; PROCESSOR IMPURE DATA AREA ; .IF DF M$$PRO $PROC2::.BYTE 0 ;PROCESSOR NUMBER * 2 $PROCN::.BYTE 0 ;PROCESSOR NUMBER .ENDC $STKDP::.WORD 0 ;STACK DEPTH INDICATOR $TKTCB::.WORD 0 ;POINTER TO CURRENT TASK TCB $CURPR::.WORD $PRTAB ;POINTER TO CURRENT TASK PRIORITY $SGFFR:: .WORD 0 ;POINTER INTO STACK FOR $SGFIN $HFMSK::.WORD HF.EIS ;HARDWARE MASK WORD .WORD H2.BRG ;SECOND HARDWARE MASK WORD ;H2.BRG IS SET BECAUSE THE VIRGIN BOOT ;OF A PROFESSIONAL 300 SERIES MACHINE ;IS CURRENTLY ALWAYS DONE ON A BRIDGE ;SYSTEM AND INITL DOES NOT SET THIS BIT $HFEND:: ;REF. LABLE TO DELIMIT HARDWARE FEATURE ;MASK WORDS. ; $RBTAD IS THE ADDRESS OF THE RE-BOOT ENTRY TO THE BOOT ROM .IF DF B$$OOT $RBTAD::.WORD B$$OOT ;ADDRESS OF REBOOT ROM ENTRY .ENDC ; DF B$$OOT ; ; THE FOLLOWING BYTE IS A FLAG SET WHENEVER SUPERVISOR I SPACE IS ; MAPPED READ/WRITE, MEANING THE PDR'S MUST BE CLEARED ON CONTEXT SWITCH ; $SIRWF::.BYTE 0 ;SUPER I SPACE R/W FLAG $CXDBL::.BYTE 0 ;CONTEXT SWITCH DISABLE FLAG $SAHDB:: ;BIAS OF CURRENT TASK HEADER .IF DF X$$HDR .WORD 0 $SAVSP::.WORD $UMR4 ;SAVED SP - ALWAYS POINTS TO UMR4 .IFTF $SAHPT:: ;VIRTUAL ADDRESS OF CURRENT TASK HEADER .IFT .WORD 0 .ENDC $HEADR::.WORD 0 ;POINTER TO CURRENT TASK HEADER .IF DF F$$MAP $FMAPP::.WORD 0 ;POINTER TO FAST MAP AREA OF HEADER .ENDC ; DF F$$MAP $RQSCH::.WORD $RQTAB ;POINTER TO CURRENT RESCHEDULE POINTER ; ; THE FOLLOWING CELLS CONDITIONALLY DESCRIBE THE EXECUTIVE CONFIGURATION ; IF KERNEL DATA SPACE IS SUPPORTED. ; .IF DF K$$DAS $ROEND::.WORD <<<$EXEND+77>&177700>/100>&1777 ;LENGTH IN 32 WD BLOCKS ;OF R/O SECTION OF EXECUTIVE $SCMOF::.WORD 0 ;OFFSET TO DATA SPACE OR 0 IF NOT LOADED .WORD 3 ;ALLOCATION SIZE MASK $ICAVL::.WORD $ICBEG ;BEGINNING OF ALLOCATED ICB POOL .WORD 0 ;DUMMY SIZE FOR FIRST BLOCK .IFF $SCMOF:: ;MAKE SURE SYMBOL IS ALWAYS DEFINED .ENDC ; ; UMR ALLOCATION LISTHEAD AND WAIT QUEUE LISTHEAD. THE ALLOCATION ; LISTHEAD DOUBLES AS A DESCRIPTOR OF THE UMRS STATICALLY ALLOCATED TO ; THE EXEC AND ANYONE ELSE. ; .IF DF M$$EXT&U$$UMR .IF DF U$$BME $UMRHD::.WORD $UBUMR+2 ;MAPPING ASSIGNMENT BLOCK LISTHEAD .IFF ; $UMRHD::.WORD 0 ;MAPPING ASSIGNMENT BLOCK LISTHEAD .IFTF ;U$$BME .WORD UBMPR ;ADDRESS OF FIRST ASSIGNED UMR .WORD N$$UMR ;NUMBER OF UMR'S STATICLY ASSIGNED * 4 $UMRWT::.WORD 0,.-2 ;UMR WAIT QUEUE LISTHEAD $UBUMR:: .IFT ;U$$BME .WORD 0 ; LINK WORD .WORD UBMPR+174 ; ADDRESS OF FIRST ASSIGNED UMR .WORD 4 ; NUMBER OF UMR'S ASSIGNED .ENDC ;DF U$$BME .ENDC ; DF M$$EXT&U$$UMR ; ; DATA STRUCTURES FOR EXECUTIVE IDLE CODE ; $IDLCT::.BYTE 0 ;IDLE PATTERN COUNT BYTE $IDLFL::.BYTE 0 ;IDLE PATTERN FLAG BYTE $IDLPT::.WORD 7760 ;IDLE PATTERN WORD .WORD 0 ;WORKING STORAGE FOR IDLE PATTERN ; ; SYSTEM POWER FAIL STACK, IF CRASH DUMP NOT SUPPORTED ;DC403 ; ;**-1 .IF DF P$$RFL .IF DF M$$PRO $PWKA0::.BLKW M$$PRO ;;;STORAGE FOR KINAR0 IN CPA'S AREA $PWCSR::.WORD FKCSR ;;;POINTER TO IIST CSR FKCSR: .WORD 0 ;;;CPA CSR (WHEN NO IIST PRESENT) .ENDC .IF NDF,C$$CDA ;DC403 $PWBTM::.BLKW 7 ;R0 THRU R5 AND SP .IF DF M$$EXT .BLKW 31.*2 ;UNIBUS MAPPING REGISTERS .ENDC .BLKW 25. ;MEMORY MANAGEMENT REGS & USER SP .IF DF F$$LPP .BLKW 27. ;FLOATING POINT REGISTERS .ENDC .IF DF K$$DAS .BLKW 8. ;KERNEL D SPACE APR'S .ENDC .IF DF S$$LIB .BLKW 16. ;SUPER I SPACE PARS AND PDRS .BLKW 16. ;SUPER D SPACE PARS AND PDRS .BLKW 1 ;SUPER SP .ENDC .IF DF U$$DAS .BLKW 16. ;USER D SPACE REGISTERS .ENDC ; DF U$$DAS $PWSTK==.-2 ;REF LABEL .ENDC ;NDF,C$$CDA ;DC403 $POWSP:: .BLKW 1 ;SAVED SP FOR POWERFAIL STACK .ENDC ; ; FLOATING POINT SUPPORT WORK AREA ; .IF DF F$$LPP $FLSTS::.BLKW 2 ;FLOATING POINT STATUS $FLFRK::.WORD $FLFTB ;POINTER FOR FLOATING POINT FORK BLOCK $FLTCB::.BLKW 1 ;ADDRESS OF TCB CAUSING EXCEPTION TRAP .ENDC ; ; SAVE AREA FOR ERROR LOGGING NONSENSE INTERRUPT HANDLING ; .IF DF E$$LOG&E$$NSI $VID:: .BLKB 1 ;VECTOR ID STORAGE $NSI:: .BYTE -1 ;RECURSION COUNTER $OPS:: .BLKW 1 ;OLD PS STORAGE $OPC:: .BLKW 1 ;OLD PC STORAGE $ERLFK::.WORD $PBEZ ;POINTER TO ERROR LOGGING FORK BLOCK .ENDC ; DF E$$LOG&E$$NSI ; ; DATA STRUCTURES FOR PARITY SUPPORT ; ; EXEC PARITY ERROR MESSAGE ; .IF DF P$$RTY .NLIST BEX $EXMSG::.ASCIZ <15><12>/***EXEC PARITY ERROR STOP***/<15><12><12> ; .LIST BEX .EVEN ; ; INTERRUPT RECURSION LEVEL COUNTER ; $PARLV::.WORD -1 ; ; ; PARITY CONTROL STATUS REGISTER ADDRESS TABLE ; ; ******* NOTE WELL ! ******* ; ; THE FOLLOWING TABLES ARE REFERENCED IN INITL AND PARTY, AS WELL AS ; BY SAVE AND HRC. THE ADJACENCY OF THE ITEMS STARTING AT $PARTB AND ; INCLUDING $MEMR1, $MPCSR, AND $CPUER IS NOT ONLY ASSUMED, IT IS ; CRUCIAL AND MUST BE PRESERVED. NOTE ALSO THAT ANY CHANGE IN THE ; STRUCTURE OF $PARTB SHOULD PROBABLY BE REFLECTED IN $MKCSR AND $MKCS2, ; BOTH FOUND IN SYSCM. $CSRTB:: ;REFERENCE LABEL $MEMRG::.BYTE 16.,<172100&177400>/400,172100&377 ;MEMORY PARITY CSR'S .BYTE 6. ,<177740&177400>/400,177740&377 ;CACHE CONTROL CSR'S .BYTE 1. ,<177766&177400>/400,177766&377 ;CPU ERROR REGISTER .BYTE 0 ;END OF TABLE .BLKW 1 ;DUMMY STORAGE FOR MEMORY ERROR REGISTER .IFTF ; DF P$$RTY $PARTB::.WORD 1 ;DUMMY CSR FOR NONEXISTANT REGISTERS .IFT ; DF P$$RTY ; ; TABLE OF CSR ADDRESSES. IF THE CSR DOES NOT EXIST, THE ENTRY POINTS ; TO $PARTB ABOVE. THIS MUST BE THE CASE SO THAT CODE REFERENCING THE ; CSRS PRIOR TO THE CSR SCAN (SUCH AS THE LOCK$ $EXECL IN INITL) WILL ; ACCESS A DUMMY LOCATION, NOT LOCATION 0. ; $MEMR1:: ;MEMORY PARITY CSR TABLE .REPT 16. .WORD $PARTB ;POINT TO DUMMY CSR .ENDR $MPCSR:: ;VECTOR OF CACHE CSR ADDRESSES .REPT 6. .WORD $PARTB ;POINT TO DUMMY CSR .ENDR .IFTF ; DF P$$RTY $CPUER:: ;CPU ERROR REGISTER .WORD $PARTB ;POINT TO DUMMY CSR .IFT ; DF P$$RTY ; ; PDP-11/70 CACHE PARITY STATUS TABLE ; .IF DF P$$D70 $MSTAT::.BLKW 2 ;FIRST TWO PARITY CSR'S $STAT:: .BLKW 1 ;MEMORY STATUS REGISTER .BLKW 3 ;LAST THREE PARITY CSR'S $ERTRK::.BYTE 44,120 ;ADDRESS/DATA GROUP 0 .WORD 0 ;TIME OF LAST ERROR .BYTE 30,240 ;ADDRESS/DATA GROUP 1 .WORD 0 ;TIME OF LAST ERROR .WORD 0 ;END OF TABLE ; ; NEW CACHE PARITY CSR CONTENTS ; $MPCTL::.WORD 1 ; .ENDC .IFF ; DF P$$RTY $CSRTB:: ;REFERENCE LABEL .ENDC ; DF P$$RTY ; DATA AREA FOR DYNAMIC EXEC DEBUGGER INTERFACE .IF DF D$$DXD $DXDK5::.WORD 0 ;SAVED KINAR5 FOR DXD $DXDRL::.WORD 0 ;RELOCATION BIAS FOR DXD $DXDEP::.WORD 0 ;ENTRY POINT TO DXD .ENDC ; D$$DXD ; ; DATA AREA FOR BUGCHECK SUPPORT ; $BCFAC::.WORD 0 ;FACILITY CODE $BCERR::.WORD 0 ;ERROR CODE ; ; DATA AREA FOR SYSTEM CRASH MODULE ; .IF DF C$$CDA $CRBAE::.WORD 0 ;DEFINE EXISTENCE OF BAE REGISTER .IIF EQ C$$CDA-12 CDA$MS=0 ;MS RESIDENT CRASH DRIVER .IIF EQ C$$CDA CDA$MS=0 ;LOADABLE CRASH DRIVERS .IIF EQ C$$CDA-16 CDA$DU=0 ;DC403 .IIF EQ C$$CDA-17 CDA$MU=0 ;DC403 .IIF EQ C$$CDA CDA$DU=0 ; LOADABLE CRASH ;DC403 ;DC403 .IF DF CDA$MS ;MS RESIDENT OR LOADABLE CRASH DRIVER ;DC403 .IF DF CDA$DU!CDA$MU!H$$GEN ;DC403 .IFF ; MSCP CDA ;DC403 ;**-3 $MSCR1:: ;COMMAND BUFFER FOR MS CRASH DUMP .BLKW 5 ;NEED FOUR WORDS ON DOUBLE WORD BOUNDARY $MSCR2:: ;CHARACTERISTICS DATA .WORD $MSCR3 ;LOW ORDER 16 BITS OF MESSAGE ;BUFFER ADDRESS .WORD 0 ;HIGH ORDER 2 BITS .WORD 14. ;SIZE OF THE MESSAGE BUFFER .WORD 0 ;FLAG WORD $MSCR3::.BLKW 7 ;MESSAGE BUFFER .ENDC ; MSCP CDA ;DC403 .ENDC ;DF CDA$MS .IF DF CDA$DU!CDA$MU!H$$GEN ;**-3 ; ; CRASH DATA BASE FOR DU DEVICES ; ; *** NOTE WELL *** ; ANY CHANGES TO THIS DATABASE MUST ALSO BE MADE IN CRASH.MAC ; COMMAND AND RESPONSE PACKETS .WORD 60 ;PACKET LENGTH .WORD 1 ;VIRTUAL CIRCUIT AND CREDIT/DEBIT FIELD CMDPKT: .WORD 1 ;COMMAND PACKET AREA .BLKW 23. ; .BLKW 2 ;ENVELOPE RSPPKT: .BLKW 24. ;RESPONSE PACKET AREA ;DC403 .IF DF CDA$MS ;MS RESIDENT OR LOADABLE CRASH DRIVER ;DC403 ;DC403 $$$ =. ; REMEMBER WHERE WE ARE ;DC403 . =RSPPKT ; RESET ORIGIN ;DC403 ;DC403 $MSCR1:: ;COMMAND BUFFER FOR MS CRASH DUMP ;DC403 .BLKW 5 ;NEED FOUR WORDS ON DOUBLE WORD BOUNDARY ;DC403 $MSCR2:: ;CHARACTERISTICS DATA ;DC403 .WORD $MSCR3 ;LOW ORDER 16 BITS OF MESSAGE ;DC403 ;BUFFER ADDRESS ;DC403 .WORD 0 ;HIGH ORDER 2 BITS ;DC403 .WORD 14. ;SIZE OF THE MESSAGE BUFFER ;DC403 .WORD 0 ;FLAG WORD ;DC403 ;DC403 $MSCR3::.BLKW 7 ;MESSAGE BUFFER ;DC403 ;DC403 .IIF GT,<.-$$$>, .ERROR ; MS: DATABASE IS TOO LARGE ;DC403 ;DC403 . =$$$ ; AND RETURN TO MSCP CRASH DATABASE ;DC403 .ENDC ;DF CDA$MS ;DC403 ;DC403 .BLKW 2 ; ; COMMAND RINGS RINGS: RSP: .WORD RSPPKT ;RESPONSE PACKET RING .WORD 100000 ; PACKET "OWNED" BY CONTROLLER CMD: .WORD CMDPKT ;COMMAND PACKET RING .WORD 100000 ; PACKET "OWNED" BY CONTROLLER ; INITIALIZATION TABLE $MUCSH:: $DUCSH::.WORD CMDPKT, RSPPKT ;ADDRESSES OF PACKETS .WORD 100000, RINGS ;STEPS 1 AND 2 .WORD 0, 1 ;STEPS 3 AND 4 .WORD RSP ;ADDRESS OF RESPONSE RING .ENDC .IFF ; DF C$$CDA $BCPC:: .WORD 0 ;BUGCHECK PC FOR TYPE DIRECT .IFT ; DF C$$CDA $BCPC:: ;ALTERNATE LABEL FOR CRASH PC $CRUPC::.WORD 0 ;USER PC IS STORED HERE $CRUST::.WORD 0 ;USER PS IS STORED HERE .NLIST BEX $CRMS0::.ASCII <15><12><12>/CRASH -- CONT WITH SCRATCH MEDIA ON / $CRDEV:: ;REFERENCE SYMBOL .IIF EQ C$$CDA-1, .ASCII /DT/ .IIF EQ C$$CDA-2, .ASCII /DK/ .IIF EQ C$$CDA-3, .ASCII /MT/ .IIF EQ C$$CDA-4, .ASCII /MM/ .IIF EQ C$$CDA-5, .ASCII /DB/ .IIF EQ C$$CDA-6, .ASCII /DM/ .IIF EQ C$$CDA-7, .ASCII /DL/ .IIF EQ C$$CDA-10, .ASCII /DD/ .IIF EQ C$$CDA-11, .ASCII /DR/ .IIF EQ C$$CDA-12, .ASCII /MS/ .IIF EQ C$$CDA-13, .ASCII /DX/ ;NOT SUPPORTED .IIF EQ C$$CDA-14, .ASCII /DY/ ;NOT SUPPORTED .IIF EQ C$$CDA-15, .ASCII /MF/ ;NOT SUPPORTED .IIF EQ C$$CDA-16, .ASCII /DU/ .IIF EQ C$$CDA-17 .ASCII /MU/ .IIF EQ <.-$CRDEV> .ASCII /XX/ ;ALWAYS ALLOW FOR A DEVICE NAME $CRUNT::.BYTE <60+> .BYTE <60+/10>> .BYTE <60+>> .ASCIZ <15><12><12> .IF DF M$$PRO $CRMS1::.ASCIZ <15><12>/CRASH -- WAITING FOR PROCESSORS TO QUIESCE/ $CRMS2::.ASCIZ <15><12>/CRASH -- PROCESSOR REGISTERS HAVE BEEN SAVED/ $CRMS4::.ASCIZ <15><12>/CRASH -- SANITY TIMER EXPIRED ON PROCESSOR CP/ $CRMS5::.ASCIZ <15><12>/CRASH -- CRASH REQUESTED BY PROCESSOR CP/ $CRCPU::.ASCIZ /?/ .ENDC $CRMS3::.ASCIZ <15><12>\CRASH -- I/O ERROR ON CRASH DUMP DEVICE\ $CRMS6::.ASCIZ <15><12>/CRASH -- ILLEGAL CRASH DEVICE/ $CRMS7::.ASCIZ <15><12>/CRASH -- CRASH DRIVER NOT LOADED/ ; ALL THE SECTIONS OF THE BUGCHECK MESSAGE MUST BE CONTIGUOUS $BCMSG::.ASCIZ <15><12>/SYSTEM FAULT DETECTED AT PC=/ .ASCIZ / FACILITY=/ .ASCIZ / ERROR CODE=/ .ASCIZ <15><12><12> .BLKB 6 ;BUFFER FOR OCTAL CONVERSION $BCBUF::.BYTE 0 ;OF VALUES IN CRASH .LIST BEX .ENDC ; DF C$$CDA .IF DF A$$CNT $BILNG::.BYTE 1 ;BILLING IS INITIALLY OFF .IFF $BILNG:: .ENDC .IF DF S$$LIB $SUPFL::.BYTE 0 ;SUPERVISOR WINDOW FLAG .ENDC ; DF S$$LIB .EVEN ; *** THE FOLLOWING MUST BE ADJACENT .IF DF C$$CDA .BLKW 6 ;STACK AREA FOR SUBROUTINE CALLS $CRSBF::.BLKW 177. ;CRASH STACK IS THIS SIZE (NOT ;169.+4 AS PREVIOUSLY THOUGHT) ;(SEE CRASH.MAC FOR FORMAT) $CRSST==.-2 ;TOP OF CRASH STACK ; *** ABOVE MUST BE ADJACENT .IF DF P$$RFL ;DC403 ;DC403 $PWSTK==.-2 ;REF LABEL ;DC403 ;DC403 .ENDC ;DF,P$$RFL ;DC403 ;DC403 .IF EQ, C$$CDA ;LOADABLE CRASH DRIVER SUPPORT PBNH = 0 ;STARTING DEVICE ADDRESS PBNL = 0 ;UNKNOWN .IFTF $CRSBN::.WORD PBNH,PBNL ;STARTING DEVICE ADDRESS $CRSCS::.WORD PBNH+PBNL ;CHECKSUM OF DEVICE ADDRESS $CRDMP::.BYTE 0 ;FLAG INDICATING REGS HAVE BEEN SAVED .BYTE 0 ;PRESERVE WORD ALIGNMENT $CRPAR:: .IFT ; EQ, C$$CDA .WORD 0 ;P.REL OF LOADED CRASH DRIVER .ENDC ; EQ, C$$CDA .ENDC ; DF C$$CDA .IF DF A$$CNT $STRTM::.BLKW 2 ;ABSOLUTE TIME OF CONTEXT SWITCH TO TASK .IFF $STRTM:: .ENDC ; HERE WE DEFINE A SINGLE "FAKE WORD" WHICH RECEIVES ALL THE ADDRESSES ; FOR THINGS WHICH ARE NOT GENNED INTO THE SYSTEM, BUT WHICH REQUIRE ; THAT THE ADDRESSES ALWAYS BE RESOLVED FOR TASKBUILDING MCR, ETC. ; THIS ONE (IN LOWCR) IS TO BE USED FOR I SPACE REFERENCES AND CPU ; SPECIFIC INFO (ALSO THINGS WHICH MUST BE ACCESSED WHEN D SPACE IS ; TURNED OFF), AND THE ONE IN SYSCM IS USED FOR D SPACE LOCATIONS .IF NDF R$$WPT $WPBR:: FAKE = 0 .ENDC ; NDF R$$WPT .IF NDF P$$RTY $PARLV:: FAKE = 0 .ENDC ; NDF P$$RTY .IF NDF D$$DXD $DXDEP:: $DXDK5:: $DXDRL:: FAKE = 0 .ENDC ; NDF D$$DXD .IF DF FAKE .WORD -1 ;FAKE DATA LOCATION FOR ALL OF THE ;ABOVE .ENDC ; DF FAKE ;+ ; **-$NS0,$NS1,$NS2,$NS3,$NS4,$NS5,$NS6,$NS7- ; NONSENSE INTERRUPT IDENTIFIER ROUTINES ; ; EACH OF THESE ROUTINES IS VECTORED TO BY ONE OF A GROUP OF 16 ; UNUSED VECTORS. THE VECTORS ARE SUB-CODED IN THE PS CONDITION CODES. ;- .IF DF M$$PRO!V$$DSK ; ; IN A MULTIPROCESSING SYSTEM, SOME STACK SPACE IS NECESSARY WHEN ; THE CPU IS INTERRUPTED. THE M9312MP BOOTSTRAP SETS R6 TO THE ; VALUE POINTED TO BY PHYSICAL ZERO. THIS IS THAT AREA. ; ; FOR BOOTABLE VIRUTAL DEVICES, THIS WILL SERVE AS THE STACK USED ; BY BOOT, TO PASS THE VIRTUAL DEVICE LBN PAIRS. ; .IF DF,V$$DSK ;DC403 .IF GT, ;DC403 .BLKW <*6> ; THIS IS REALLY A WASTE, AND THE MAXIMUM ;DC403 ; NESTING SHOULD REALLY BE SET TO A MAXIMUM ;DC403 ; OF TWO, SINCE IT CAN'T BE RELEASED BY INITL ;DC403 .ENDC ;GT ; WHAT IS REALLY NEEDED.. ;DC403 .ENDC ;DF,V$$DSK ; BUT SOMEONE WILL WANT MORE ... SO BE IT... ;DC403 .BLKW 19. ; STACK SPACE FOR IIST, OR LBN PAIRS ;DC403 .WORD "VF ; SHOW VF: SUPPORT INCLUDED ... ;DC403 ;**-2 .ENDC ;DF,M$$PRO!V$$DSK $NS0:: NSI ;;;CALL COMMON ROUTINE .WORD 0 ;;;GROUP 0-17 $NS1:: NSI ;;; .WORD 20 ;;;GROUP 20-37 $NS2:: NSI ;;; .WORD 40 ;;;GROUP 40-57 $NS3:: NSI ;;; .WORD 60 ;;;GROUP 60-77 $NS4:: NSI ;;; .WORD 100 ;;;GROUP 100-117 $NS5:: NSI ;;; .WORD 120 ;;;GROUP 120-137 $NS6:: NSI ;;; .WORD 140 ;;;GROUP 140-157 $NS7:: NSI ;;; .WORD 160 ;;;GROUP 160-177 ; ; INDIRECT POINTERS INTO MULTIPROCESSOR TABLES ; .IF DF M$$PRO $TKPTR::.WORD $TKTAB ;POINTER INTO CURRECT TASK TABLE $MPSWT::.WORD $MPTAB ;POINTER INTO CPU STATUS TABLE $CPURM::.WORD $URMTB ;POINTER INTO CPU URM TABLE $CPCRM::.WORD $CRMTB ;POINTER INTO COMPLEMENTED RUN MASK TBL $TTUQP::.WORD $TTUQ ;TTDRV MULTIPROCESSOR POINTER ; ; MULTIPROCESSOR LOCAL MEMORY WORDS. ; $CPBIT::.WORD 1 ;PROCESSOR BIT FOR USE IN MASKS $FRKCT::.WORD 0 ;NUMBER OF FORK BLOCKS DEQUEUED .ENDC ; ; KXJ11 SPECIFIC LOCATIONS ; .IF DF C$$KXJ ; KXJ SUPPORTED? $KXVC1::.BLKW 1 ; KXJ VECTOR 1 - DRIVER COMMUNICATION $CSFSV::.BLKW 1 ; SAVED KXJ CSR F - FULLY SHARED MEMORY $CSHSV::.BLKW 1 ; SAVED KXJ CSR H - " " " $KXPTR::.BLKW 1 ; POINTER TO KXJ DRIVER'S DCB $KXBAS::.BLKW 1 ; BASE ADDRESS OF KXDRV .IFF $KXVC1:: $CSFSV:: $CSHSV:: $KXPTR:: $KXBAS:: .ENDC ; C$$KXJ ; ; REMOTE SYSTEM SPECIFIC LOCATIONS ; .IF DF C$$RMT ; REMOTE HOST $XXLOW::.BLKW 1 ; FIRST GENERIC DCB ADDRESS $XXHGH::.BLKW 1 ; LAST GENERIC DCB ADDRESS ; USED TO IDENTIFY A GENERIC DEVICE .IFF $XXLOW:: $XXHGH:: .ENDC ; C$$RMT ; ; ADDRESS TO INCREMENT ON EVERY CLOCK TICK ; THIS IS EITHER 110 OR ON KXJ REMOTE SYSTEMS TPR5 ; $CKINC::.WORD 110 ; INITIALIZE TO 110 ; ; REMOTE TASK SPECIFIC LOCATIONS ; .IF DF C$$RTK ; REMOTE TASK SUPPORT $CPPKT:: .WORD 0 ; PRE-ALLOCATED CPRBUF PACKET ADDRESS $CPLUN:: .WORD 0 ; LUN NUMBER FOR REMOTE I/O KILLS $CPRBF:: .WORD 0 ; CPRBUF FREE SPACE LISTHEAD $CPWAT:: .BLKW 2 ; LISTHEAD FOR PACKETS WAITING TO BE SENT $CPOUT:: .BLKW 2 ; LISTHEAD FOR OUTSTANDING PACKETS $CPPOL:: .WORD 0 ; CPRSX POOL WAIT FLAG WORD $CPMXB:: .WORD 0 ; MAXIMUM SIZE TO BUFFER IN CPR PACKET $CPCNT:: .WORD 0 ; REMOTE SYSTEM CONTROLLER LETTER $RMTSK:: .WORD 3 ; NUMBER OF REMOTE STATIC TASKS $RMTTT:: .BLKW 1 ; NUMBER OF REMOTE HT TERMINALS $RMTVT:: .BLKW 1 ; NUMBER OF REMOTE VT TERMINALS .IFF $CPPKT:: $CPLUN:: $CPRBF:: $CPWAT:: $CPOUT:: $CPPOL:: $CPMXB:: $CPCNT:: $RMTSK:: $RMTTT:: $RMTVT:: .ENDC ; C$$RTK .END